///\todo upgrade

//////////////////////////////////////////////////////////////////////////////////
//                                                                              //
//  This file is part of the buola project (https://code.google.com/p/buola/).  //
//                                                                              //
//  Copyright(c) 2007-2012 Xavi Gratal                                          //
//  gratal AT gmail DOT com                                                     //
//                                                                              //
//  Buola is free software: you can redistribute it and/or modify               //
//  it under the terms of the GNU General Public License as published by        //
//  the Free Software Foundation, either version 3 of the License, or           //
//  (at your option) any later version.                                         //
//                                                                              //
//  Buola is distributed in the hope that it will be useful,                    //
//  but WITHOUT ANY WARRANTY; without even the implied warranty of              //
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               //
//  GNU General Public License for more details.                                //
//                                                                              //
//  You should have received a copy of the GNU General Public License           //
//  along with buola.  If not, see <http://www.gnu.org/licenses/>.              //
//                                                                              //
//////////////////////////////////////////////////////////////////////////////////

#ifndef __BUOLA_IMAGE_AUTO_ENUMS_H__
#define __BUOLA_IMAGE_AUTO_ENUMS_H__

namespace buola { namespace img {

enum class EGCCaps
{
    NONE=0,
    OPENGL=(1<<0)
};

DECLARE_ENUM_CLASS_BITOPS(EGCCaps);

enum EDistType
{
    DIST_C,
    DIST_L1,
    DIST_L2
};

enum class ECompOp
{
    CLEAR,
    SRC,
    DEST,
    OVER,
    OVER_REVERSE,
    IN,
    IN_REVERSE,
    OUT,
    OUT_REVERSE,
    ATOP,
    ATOP_REVERSE,
    XOR,
    ADD,
    SATURATE
};

enum class EAlign
{
    LEFT=(1<<0),
    RIGHT=(1<<1),
    HCENTER=(1<<2),
    JUSTIFY=(1<<3),
    TOP=(1<<4),
    BOTTOM=(1<<5),
    VCENTER=(1<<6),
    BASELINE=(1<<7),

    CENTER=HCENTER|VCENTER,

    HORIZONTAL=(LEFT|RIGHT|HCENTER|JUSTIFY),
    VERTICAL=(TOP|BOTTOM|VCENTER|BASELINE)
};

DECLARE_ENUM_CLASS_BITOPS(EAlign);

enum class ELineStyle
{
    SOLID,
    ONOFF,
    DASH
};

enum class ELineCap
{
    BUTT,
    ROUND,
    SQUARE
};

enum class ELineJoin
{
    MITER,
    ROUND,
    BEVEL
};

enum class EExtend
{
    NONE,
    NORMAL,
    MIRROR
};

enum class EFontWeight
{
    THIN         =   0,
    EXTRALIGHT   =   40,
    LIGHT        =   50,
    BOOK         =   75,
    REGULAR      =   80,
    MEDIUM       =   100,
    DEMIBOLD     =   180,
    BOLD         =   200,
    EXTRABOLD    =   205,
    HEAVY        =   210
};

enum class EFontSlant
{
    ROMAN         =   0,
    ITALIC        =   100,
    OBLIQUE       =   110
};

enum class EFontWidth
{
    ULTRACONDENSED=   50,
    EXTRACONDENSED=   65,
    CONDENSED     =   75,
    SEMICONDENSED =   87,
    NORMAL        =   100,
    SEMIEXPANDED  =   113,
    EXPANDED      =   125,
    EXTRAEXPANDED =   150,
    ULTRAEXPANDED =   200
};

enum class ESpacing
{
    PROPORTIONAL=   0,
    DUAL        =   90,
    MONO        =   100,
    CHARCELL    =   110
};

enum class EHinting
{
    NONE           =   0,
    SLIGHT         =   1,
    MEDIUM         =   2,
    FULL           =   3
};

enum class EFontAttribs
{
    NONE         =   0,
    UNDERLINE    =   (1<<0),
    STRIKETHROUGH=   (1<<1),
    SMALLCAPS    =   (1<<2)
};

enum class ETextPos
{
    LEFT                =   0,
    TOP                 =   0,
    TOPLEFT             =   0,
    RIGHT               =   (1<<1),
    HCENTER             =   (1<<2),
    BOTTOM              =   (1<<3),
    BOTTOMONE           =   (1<<4),
    BASELINE            =   (1<<5),
    VCENTER             =   (1<<6),
    CENTER              =   VCENTER|HCENTER
};

DECLARE_ENUM_CLASS_BITOPS(ETextPos);

enum class ETypoFeatures
{
    NONE           =   0,
    ALL_ALTERNATE  =   (1<<0)
};

DECLARE_ENUM_CLASS_BITOPS(ETypoFeatures);

/*namespace img*/ } /*namespace buola*/ }

#endif
